<?php

/**
 * Description of LoginHelper
 *
 * @author tiago
 */
require_once ROOT . '/server/classes/arquitetura/helper/AbstractHelper.class.php';

class LoginHelper extends AbstractHelper {
    
    /**
     * Building Login object
     * @param $objRequest  Pass $_POST or $_GET or $_REQUEST
     */
    public static function getObjFromRequest($objRequest) {
        $login = new Login();
        $login->setEmpresa(Util::getRequestVal($objRequest, 'empresa'));
        $login->setEmail(Util::getRequestVal($objRequest, 'usuario'));
        $login->setSenha(Util::getRequestVal($objRequest, 'senha'));
        $login->setCode(Util::getRequestVal($objRequest, 'code'));
        return $login;
    }

    /**
     * Building Login object
     * @param $objDB  Pass the object returned from Database
     */
    public static function getObjFromDB($objDB) {
        return null;
    }
    
    /**
     * Build data's part of json
     * @param type $entity
     * @return array.
     */
    public static function getJsonFromEntity($entity) {
        //Implementando pela obrigatoriedade.
        return null;
    }

    /**
     * Validando as informações de Login.
     * @author tiago
     */
    public static function validarModel($model) {
        $log = new Log();
        $result = TRUE;
        $erros = array();
        
        if($log->isDebugEnabled()) {
            $log->logDebug('Entrou no validarModel');
        }
        
        //OBS: A funcao isEmpty deve receber uma variavel e não uma chamada a um metodo
        $empresa = $model->getLogin()->getEmpresa();
        if (Util::isEmpty($empresa)) {
            $erros['empresa'] = 'Preenchimento obrigatório de Empresa.';
        }

        $email = $model->getLogin()->getEmail();
        if (Util::isEmpty($email)) {
            $erros['usuario'] = 'Preenchimento obrigatório do Usuário.';
        } else if (Util::isEmailInvalido($email)) {
            $erros['usuario'] = 'Email com formato inválido.';
        }

        $senha = $model->getLogin()->getSenha();
        if (Util::isEmpty($senha)) {
            $erros['senha'] = 'Preenchimento obrigatório de Senha.';
        }
        
        if(isset($_SESSION['showAntiSpan'])) {
            $sessionCode = $_SESSION['cryptcode'];
            $code = $model->getLogin()->getCode();
            
            if($log->isDebugEnabled()) {
                $log->logDebug('$code: ' . $code);
                $log->logDebug('md5($code): ' . md5($code));
                $log->logDebug('Código Digitado: ' . $sessionCode);
            }
            
            if (Util::isEmpty($code)) {
                $msg = 'Preenchimento obrigatório do Código de Segurança.';
                if($log->isInfoEnabled()) {
                    $log->logInfo($msg);
                }
                $erros['code'] = $msg;
            } else if($sessionCode != md5($code)) {
                $msg = 'Código de Segurança inválido.';
                if($log->isInfoEnabled()) {
                    $log->logInfo($msg);
                }
                $erros['code'] = $msg;
            }
        }

        if (IHelper::ZERO < count($erros)) {
            if($log->isInfoEnabled()) {
                $log->logInfo('Modelo invalido.');
            }
            $model->setResult(ResultFactory::newResultFalhaValidacao($erros));
            $result = FALSE;
        }
        
        if($log->isInfoEnabled()) {
            $log->logInfo('Modelo validado com sucesso.');
        }
        
        return $result;
    }

}
?>
